package com.blog.controller.admin;


import com.blog.entity.Comment;
import com.blog.entity.PageBean;
import com.blog.service.CommentService;
import com.blog.util.DateJsonValueProcessor;
import com.blog.util.ResponseUtil;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


@Controller
@RequestMapping("/admin/comment")
public class CommentAdminController {
    @Resource
    private CommentService commentService;

    //查询评论列表
    @RequestMapping("/list")
    public String list(@RequestParam(value = "page", required = false) String page, @RequestParam(value = "rows", required = false) String rows, @RequestParam(value = "state", required = false) String state, HttpServletResponse response) throws Exception {

        PageBean pageBean = new PageBean(Integer.parseInt(page), Integer.parseInt(rows));
        //设置分页参数、评论状态
        Map<String, Object> map = new HashMap();
        map.put("start", pageBean.getStart());
        map.put("size", pageBean.getPageSize());
        map.put("state", state);
        //查询评论列表
        List<Comment> commentList = commentService.list(map);
        //查询评论总数
        Long total = commentService.getTotal(map);

        //封装到json对象
        JSONObject result = new JSONObject();
        //利用JsonConfig类进行日期格式转换
        JsonConfig jsonConfig = new JsonConfig();

        jsonConfig.registerJsonValueProcessor(Date.class, new DateJsonValueProcessor("yyyy-MM-dd hh:mm:ss"));

        JSONArray jsonArray = JSONArray.fromObject(commentList, jsonConfig);

        result.put("rows", jsonArray);
        result.put("total", total);

        ResponseUtil.write(response, result);

        return null;
    }

    //删除评论
    @RequestMapping("/delete")
    public String delete(@RequestParam("ids") String ids, HttpServletResponse response) throws Exception {
        String[] idsStr = ids.split(",");

        for (int i = 0; i < idsStr.length; i++) {
            commentService.delete(Integer.parseInt(idsStr[i]));
        }

        JSONObject result = new JSONObject();

        result.put("success",true);

        ResponseUtil.write(response, result);

        return null;
    }

    //审核评论
    @RequestMapping("/review")
    public String review(@RequestParam("ids") String ids, @RequestParam("state") Integer state, HttpServletResponse response) throws Exception {
        String[] idsStr = ids.split(",");
        Comment comment = new Comment();
        for (int i = 0; i < idsStr.length; i++) {
            comment.setState(state);
            comment.setId(Integer.parseInt(idsStr[i]));
            commentService.update(comment);
        }

        JSONObject result = new JSONObject();

        result.put("success", true);

        ResponseUtil.write(response, result);

        return null;
    }
}

